In regard to computer-generated three-dimensional graphics objects existing in natural lighting environments, properly representing lighting from area sources, soft shadows, and interreflections are important effects in realistic image synthesis. Unfortunately, general methods in the art for integrating over large-scale lighting environments, including Monte Carlo ray tracing, radiosity, and multi-pass rendering that sums over multiple point light sources, are all impractical for real-time rendering. Real-time, realistic global illumination encounters three difficulties: (a) it must model the complex, spatially-varying Bidirectional Reflectance Distribution Functions (BRDFs) of real materials (that is, the BRDF complexity); (b) it requires integration over the hemisphere of lighting directions at each point (light integration); and (c) it must account for bouncing/occlusion effects, like shadows, due to intervening matter along light paths from sources to receivers (light transport complexity). As known and appreciated by those of skill in the art, existing developments in the art have largely focused on extending BRDF complexity (e.g., glossy and anisotropic reflections) and solving the light integration problem by representing incident lighting as a sum of directions or points. Light integration thus tractably reduces to sampling an analytic or tabulated BRDF at a few points, but becomes intractable for large light sources. Other existing methods samples radiance and preconvolves it with kernels of various sizes to solves the light integration problem, but these methods ignore light transport complexities like shadows since the convolution assumes the incident radiance is unoccluded and unscattered. Finally, a handful of additional methods exist to simulate more complex light transport, especially shadows, but light integration is as problem and these techniques are impractical for very large light sources.
An improved method that has recently emerged for solving many of these problems in preexisting methods is Precomputed Radiance Transfer (PRT), which is a method for real-time rendering of diffuse and glossy objects in low-frequency lighting environments that captures soft shadows, interreflections, and caustics. As a preprocess, a global transport simulator creates functions over the object's surface representing transfer of arbitrary, low-frequency incident lighting into transferred radiance which includes global effects like shadows and interreflections from the object onto itself. At run-time, these transfer functions are applied to actual incident lighting. Dynamic, local lighting is handled by sampling it close to the object every frame, and the object can also be rigidly rotated with respect to the lighting (and vice versa). Lighting and transfer functions are represented using low-order spherical harmonics, which avoids aliasing, and evaluates efficiently on graphics hardware by reducing the shading integral to a dot product of, say, nine (9) to twenty-five (25) element vectors for diffuse receivers. Glossy objects are handled using matrices rather than vectors. The method also implements functions for radiance transfer from a dynamic lighting environment through a preprocessed object to neighboring points in space. These allow soft shadows and caustics from rigidly moving objects to be cast onto arbitrary, dynamic receivers in order to provide real-time global lighting effects.
PRT better accounts for light integration and light transport complexity in real-time, particularly in low frequency lighting environments by using this low-order, spherical harmonic (SH) basis to represent environments efficiently. The foundational approach of the PRT method is to represent how an object scatters this light onto itself or its neighboring space. In general, the technique of the PRT method assumes initially to have a convex, diffuse object lit by an infinitely distant environment map. The object's shaded “response” to its environment can be viewed as a transfer function, mapping incoming to outgoing radiance, which in this case simply performs a cosine-weighted integral. A more complex integral captures how a concave object shadows itself, where the integrand is multiplied by an additional transport factor representing visibility along each direction. The PRT approach is to precompute for a given object the expensive transport simulation required by complex transfer functions like shadowing. The resulting transfer functions are represented as a dense set of vectors or matrices over its surface. Meanwhile, incident radiance need not be precomputed as the graphics hardware can dynamically sample incident radiance at a number of points—analytic models, such as skylight models or simple geometries like circles, can also be used. By representing both incident radiance and transfer functions in a linear basis (in this case, SH), the method exploit the linearity of light transport to reduce the light integral to a simple dot product between their coefficient vectors (diffuse receivers) or a simple linear transform of the lighting coefficient vector through a small transfer matrix (glossy receivers). Low-frequency lighting environments require few coefficients—again, ranging from nine (9) to twenty-five (25) coefficients—to enable graphics hardware to compute the result in a single pass. Thus, unlike the Monte-Carlo ray tracing technique and multi-pass light integration methods, the run-time computation of the PRT method stays constant no matter how many or how big the light sources may be, and in fact the method actually benefits from large-scale, smooth lighting to limit the number of SH coefficients necessary.
The PRT method represents complex transport effects like interreflections and caustics in the transfer function. Since these are simulated as a preprocess, only the transfer function's basis coefficients are affected, not the run-time computation. This approach handles both surface and volume-based geometry. In addition to transfer from a rigid object to itself, called self-transfer, the technique can be generalized to neighborhood-transfer from a rigid object to its neighboring space, allowing cast soft shadows, glossy reflections, and caustics on dynamic receivers.
As a preprocess, a global illumination simulator is run over the model that captures how it shadows and scatters light onto itself. The result is recorded as a dense set of vectors (diffuse case) or matrices (glossy case) over the model. At run-time, incident radiance is first projected to the SH basis. The model's field of transfer vectors or matrices is then applied to the lighting's coefficient vector. If the object is diffuse, a transfer vector at each point on the object is dotted with the lighting's coefficients to produce correctly self-scattered shading. If the object is glossy, a transfer matrix is applied to the lighting coefficients to produce the coefficients of a spherical function representing self-scattered incident radiance at each point. This function is convolved with the object's BRDF and then evaluated at the view-dependent reflection direction to produce the final shading.
To supplement this brief description of the PRT approach, more information on PRT can be found in “Precomputed Radiance Transfer for Real-Time Rendering in Dynamic, Low-Frequency Lighting Environments” by Peter-Pike Sloan, Jan Kautz, and John Snyder (SIGGRAPH, July 2002), a copy of which is included as Appendix A hereto and the entirety of which is hereby incorporated herein by reference.
Despite the benefits of the existing PRT method, however, convex unshadowed regions will exhibit less spatial variation—and hence require fewer samples—than areas near blockers casting sharp shadows, and heretofore PRT has not accounted for the benefits of spatial sampling density. Also, while a true transfer may have very high frequency content—such as a sharp visibility horizon caused by blockers, or a bright point caused by caustic focusing effects—there is typically greater interest in the lowest frequency components of the signal. What is needed in the art is an enhanced PRT method that better accounts for both spatial and density characteristics.